package com.ruoyi.problem.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 题目管理对象 problem
 * 
 * @author wcc
 * @date 2023-11-15
 */
public class Problem extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 序号 */
    private Long id;

    /** 标题 */
    @Excel(name = "标题")
    private String title;

    /** 用户id */
    @Excel(name = "用户id")
    private Long userId;

    /** 宣传id */
    @Excel(name = "宣传id")
    private Long publicizerId;

    /** 是否匿名 */
    @Excel(name = "是否匿名")
    private Integer isAnonymous;

    /** 描述 */
    @Excel(name = "描述")
    private String description;

    /** 表单格式 */
    @Excel(name = "表单格式")
    private String inputFormat;

    /** 输出格式 */
    @Excel(name = "输出格式")
    private String outputFormat;

    /** 示例 */
    @Excel(name = "示例")
    private String example;

    /** 提示 */
    @Excel(name = "提示")
    private String limitAndHint;

    /** 限时 */
    @Excel(name = "限时")
    private Long timeLimit;

    /** 内存限制 */
    @Excel(name = "内存限制")
    private Long memoryLimit;

    /** 额外文件 */
    @Excel(name = "额外文件")
    private Long additionalFileId;

    /** 数量 */
    @Excel(name = "数量")
    private Long acNum;

    /** 提交数量 */
    @Excel(name = "提交数量")
    private Long submitNum;

    /** 是否公开 */
    @Excel(name = "是否公开")
    private Integer isPublic;

    /** 级别 */
    @Excel(name = "级别")
    private Long level;

    /** 文件流 */
    @Excel(name = "文件流")
    private Integer fileIo;

    /** 文件输入流名称 */
    @Excel(name = "文件输入流名称")
    private String fileIoInputName;

    /** 文件输出流名称 */
    @Excel(name = "文件输出流名称")
    private String fileIoOutputName;

    /** 宣传时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "宣传时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date publicizeTime;

    /** 类型 */
    @Excel(name = "类型")
    private String type;

    /** 配置 */
    @Excel(name = "配置")
    private String vjudgeConfig;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setTitle(String title) 
    {
        this.title = title;
    }

    public String getTitle() 
    {
        return title;
    }
    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }
    public void setPublicizerId(Long publicizerId) 
    {
        this.publicizerId = publicizerId;
    }

    public Long getPublicizerId() 
    {
        return publicizerId;
    }
    public void setIsAnonymous(Integer isAnonymous) 
    {
        this.isAnonymous = isAnonymous;
    }

    public Integer getIsAnonymous() 
    {
        return isAnonymous;
    }
    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }
    public void setInputFormat(String inputFormat) 
    {
        this.inputFormat = inputFormat;
    }

    public String getInputFormat() 
    {
        return inputFormat;
    }
    public void setOutputFormat(String outputFormat) 
    {
        this.outputFormat = outputFormat;
    }

    public String getOutputFormat() 
    {
        return outputFormat;
    }
    public void setExample(String example) 
    {
        this.example = example;
    }

    public String getExample() 
    {
        return example;
    }
    public void setLimitAndHint(String limitAndHint) 
    {
        this.limitAndHint = limitAndHint;
    }

    public String getLimitAndHint() 
    {
        return limitAndHint;
    }
    public void setTimeLimit(Long timeLimit) 
    {
        this.timeLimit = timeLimit;
    }

    public Long getTimeLimit() 
    {
        return timeLimit;
    }
    public void setMemoryLimit(Long memoryLimit) 
    {
        this.memoryLimit = memoryLimit;
    }

    public Long getMemoryLimit() 
    {
        return memoryLimit;
    }
    public void setAdditionalFileId(Long additionalFileId) 
    {
        this.additionalFileId = additionalFileId;
    }

    public Long getAdditionalFileId() 
    {
        return additionalFileId;
    }
    public void setAcNum(Long acNum) 
    {
        this.acNum = acNum;
    }

    public Long getAcNum() 
    {
        return acNum;
    }
    public void setSubmitNum(Long submitNum) 
    {
        this.submitNum = submitNum;
    }

    public Long getSubmitNum() 
    {
        return submitNum;
    }
    public void setIsPublic(Integer isPublic) 
    {
        this.isPublic = isPublic;
    }

    public Integer getIsPublic() 
    {
        return isPublic;
    }
    public void setLevel(Long level) 
    {
        this.level = level;
    }

    public Long getLevel() 
    {
        return level;
    }
    public void setFileIo(Integer fileIo) 
    {
        this.fileIo = fileIo;
    }

    public Integer getFileIo() 
    {
        return fileIo;
    }
    public void setFileIoInputName(String fileIoInputName) 
    {
        this.fileIoInputName = fileIoInputName;
    }

    public String getFileIoInputName() 
    {
        return fileIoInputName;
    }
    public void setFileIoOutputName(String fileIoOutputName) 
    {
        this.fileIoOutputName = fileIoOutputName;
    }

    public String getFileIoOutputName() 
    {
        return fileIoOutputName;
    }
    public void setPublicizeTime(Date publicizeTime) 
    {
        this.publicizeTime = publicizeTime;
    }

    public Date getPublicizeTime() 
    {
        return publicizeTime;
    }
    public void setType(String type) 
    {
        this.type = type;
    }

    public String getType() 
    {
        return type;
    }
    public void setVjudgeConfig(String vjudgeConfig) 
    {
        this.vjudgeConfig = vjudgeConfig;
    }

    public String getVjudgeConfig() 
    {
        return vjudgeConfig;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("title", getTitle())
            .append("userId", getUserId())
            .append("publicizerId", getPublicizerId())
            .append("isAnonymous", getIsAnonymous())
            .append("description", getDescription())
            .append("inputFormat", getInputFormat())
            .append("outputFormat", getOutputFormat())
            .append("example", getExample())
            .append("limitAndHint", getLimitAndHint())
            .append("timeLimit", getTimeLimit())
            .append("memoryLimit", getMemoryLimit())
            .append("additionalFileId", getAdditionalFileId())
            .append("acNum", getAcNum())
            .append("submitNum", getSubmitNum())
            .append("isPublic", getIsPublic())
            .append("level", getLevel())
            .append("fileIo", getFileIo())
            .append("fileIoInputName", getFileIoInputName())
            .append("fileIoOutputName", getFileIoOutputName())
            .append("publicizeTime", getPublicizeTime())
            .append("type", getType())
            .append("vjudgeConfig", getVjudgeConfig())
            .toString();
    }
}
